import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertTrue;

class XQiTest {

    @Test
    void pao() {
        int qa, r;
        int[] A=new int[2], B=new int[2];

/* 后面提供了ju和ju2两个棋局。
 如果A选用棋局上的炮，则每个用例要特定的棋局，上机练习比较麻烦。
 本代码运行时，强行在ju中加入炮A，安排在棋局上的某空位上。
 输入炮A的棋子号qa：2炮 / -2砲。A也可以加在有棋子的位置。   */

        A[0]=4; A[1]=2;        //ya~A[0],xa~A[1]
        B[0]=4; B[1]=7;        //yb~B[0],xb~B[1]
        r = XQi.pao(A, B, 2, ju);//ju[4][7]=0 空
        assertEquals(1,r);//行走

        A[0]=3; A[1]=2;
        B[0]=3; B[1]=6;
        r = XQi.pao(A, B, -2, ju);
        assertEquals(-1,r);//吃子

        A[0]=1; A[1]=2;
        B[0]=8; B[1]=4;
        r = XQi.pao(A, B, -2, ju);
        assertEquals(-1,r);
        assertTrue(r<0);  //r<0 不能走

    }

    //红色的棋子： 1兵  2炮  3车  4马  5相  6士  7帅
    //黑色的棋子：-1卒 -2砲 -3車 -4馬 -5像 -6仕 -7将
    static int[][] ju = { //y10 x9         y  yx
            {-3,-4,-5,-6,-7,-6,-5,-4,-3},//0  00 01 02 03
            { 0, 0, 0, 0, 0, 0, 0, 0, 0},//1
            { 0,-2, 0, 0, 0, 0, 0,-2, 0},//2
            {-1, 0,-1, 0,-1, 0,-1, 0,-1},//3
            { 0, 0, 0, 0, 0, 0, 0, 0, 0},//4
//  x         0  1  2  3  4  5  6  7  8
            { 0, 0, 0, 0, 0, 0, 0, 0, 0},//5
            { 1, 0, 1, 0, 1, 0, 1, 0, 1},//6
            { 0, 2, 0, 0, 0, 0, 0, 2, 0},//7
            { 0, 0, 0, 0, 0, 0, 0, 0, 0},//8
            { 3, 4, 5, 6, 7, 6, 5, 4, 3} //9   90 91 92 93
    };

    static int[][] ju2 = { //y10 x9        y  yx
            {-3, 0, 0,-6,-7,-6,-5, 0, 0},//0  00 01 02 03
            { 0, 0, 0, 0, 0, 0, 0, 0, 0},//1
            { 0, 0,-4, 0,-5, 0,-4,-2, 0},//2
            {-1, 0,-1, 0,-1, 0, 0, 3, 0},//3
            { 0, 0, 0,-3, 0, 0,-1, 0,-1},//4
//  x         0  1  2  3  4  5  6  7  8
            { 0, 0, 1, 0, 0, 3, 5, 0, 0},//5
            { 1,-2, 0, 0, 1, 0, 1, 0, 1},//6
            { 0, 2, 4, 0, 0, 0, 0, 2, 0},//7
            { 0, 0, 0, 0, 0, 0, 0, 0, 0},//8
            { 0, 0, 0, 6, 7, 6, 5, 4, 0} //9   90 91 92 93
    };

}